#ifndef __ZHI_XING_HH__
#define __ZHI_XING_HH__
#if 0
// 多线程,从队列接收的任务。
void vADifferentTask(void *pvParameters);
void task_function(void *pvParameter);  // 声明任务函数

#elif 1
#include "esp_err.h"

// 多线程,从队列接收的任务。
void vADifferentTask(void *pvParameters);
void task_function(void *pvParameter); // 声明任务函数

/*掉电数据保存*/

/**
 * @brief 清空NVS
 */
void nvs_erase();

/**
 * @brief 删除wifi连接信息
 */
void delete_wifi_credentials();

/**
 * @brief nvs初始化
 */
void nvs_init();

/**
 * @brief     nvs读取数据 字符串
 * @param mingMingKongJIanI8P  命名空间
 * @param key  键名
 * @param strSZP 保存读取字符串的数组(缓冲区)
 * @return
 *      成功: ESP_OK
 *      失败: 其他错误代码
 **/
esp_err_t nvs_du_qu_str(const char *mingMingKongJIanI8P, const char *key, char *strSZP);

/**
 * @brief     nvs保存数据 字符串
 * @param mingMingKongJIanI8P  命名空间
 * @param key  键名
 * @param strSZP 要保存的字符串
 * @return
 *      成功: ESP_OK
 *      失败: 其他错误代码
 **/
esp_err_t nvs_tian_jia_str(const char *mingMingKongJIanI8P, const char *key, const char *str);

/**
 * @brief     保存WIFI连接信息到NVS
 * @param data  包含wifi连接信息的字符串;"wwcccxxx/chenxin1234567890" = ww  cccxxx  chenxin1234567890
 * @return
 *      成功: true
 *      失败: false
 **/
bool wifi_set(const char *data);

/**
 * @brief     从NVS里读取wifi连接信息,并以此信息配置和启动WIFI
 * @param data  包含wifi连接信息的字符串;"wwcccxxx/chenxin1234567890" = ww  cccxxx  chenxin1234567890
 * @return
 *      成功: true
 *      失败: false
 **/
bool wifi_Start();

/**
 * @brief     删除给定命名空间里的所有键值对
 * @param mingMingKongJIanI8P  命名空间
 * @return
 *      成功: true
 *      失败: false
 **/
bool nvs_shan_chu_all(const char *mingMingKongJIanI8P);

/**
 * @brief     删除给定命名空间里的指定键值对
 * @param mingMingKongJIanI8P  命名空间
 * @param key  键名
 * @return
 *      成功: true
 *      失败: false
 **/
bool nvs_shan_chu_key(const char *mingMingKongJIanI8P, const char *key);

/**
 * @brief     从NVS读取指定类型的键值
 * @param mingMingKongJIanI8P  命名空间
 * @param key  键名
 * @param value 保存键值返回值;要查询是是什么类型,就先建立一个类型声明,并传入它的指针
 * @param lx 查询的类型
 * @return
 *      成功: true
 *      失败: false
 **/
esp_err_t nvs_du_qu_value(const char *mingMingKongJIanI8P, const char *key, void *value, uint8_t lx);

/**
 * @brief     根据数据类型从NVS读取指定类型的键值
 * @param data  数据.例;const char *data = "wacl\\mingming\\abcdefghig"
 *              下标1表示操作方法,下标2表示要获取的数据类型,下标3位校验数据长度(总长度)"\"为数据分隔符,
 *              依次为:数据头\命名空间\键名
 * @param value  保存取出数据的缓冲区
 * @return
 *      成功: ESP_OK
 *      失败: 其他错误代码
 **/
esp_err_t nvs_du_qu_value_all(const char *data, void *value);

esp_err_t nvs_tian_jia_value(const char *mingMingKongJIanI8P, const char *key, void *value, uint8_t lx);

/**
 * @brief     根据数据类型从NVS保存指定类型的键值
 * @param data  数据.例;const char *data = "wbxl\\mingming\\abcdefghig\\5648"
 *              下标1表示操作方法,下标2表示要获取的数据类型,下标3位校验数据长度(总长度)"\"为数据分隔符,
 *              依次为:数据头\命名空间\键名\键值
 * @return
 *      成功: ESP_OK
 *      失败: 其他错误代码
 **/
esp_err_t nvs_tian_jia_value_all(const char *data);

#endif //__ZHI_XING_HH__





#endif//__ZHI_XING_HH__

